<?php

use think\Model;
use think\Request;

class weixin extends Model{
	/**
     * 构造函数
     */
	public function __construct(){
		require_once("lib/WxPay.Api.php"); // 微信扫码支付demo中的文件
        require_once("example/WxPay.NativePay.php");
        require_once("example/WxPay.JsApiPay.php");

        WxPayConfig::$appid 	= 'wx6777784f0d368141'; // * APPID：绑定支付的APPID（必须配置，开户邮件中可查看）
        WxPayConfig::$mchid 	= '1452779502'; // * MCHID：商户号（必须配置，开户邮件中可查看）
        WxPayConfig::$smchid 	= ''; // * SMCHID：服务商商户号（必须配置，开户邮件中可查看）
        WxPayConfig::$key 		= '87cc5c045d027474406781e50f6f4fa8'; // KEY：商户支付密钥，参考开户邮件设置（必须配置，登录商户平台自行设置）
        WxPayConfig::$appsecret = '032b97cea0e5af65585ffa4574540fca'; // 公众帐号secert（仅JSAPI支付的时候需要配置)
	}

	/**
     * 模式二扫码支付
     * @param   array   $order 			订单信息
     * @param   array   $config_value 	支付方式信息
     */
    function getCode($order, $config_value){
        //1、统一下单
		$input = new WxPayUnifiedOrder();
		$input->SetBody("会员充值"); // 商品描述
		$input->SetAttach("weixin"); // 附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
		$input->SetOut_trade_no($order->order_sn); // 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
		$input->SetTotal_fee($order->order_amount*100); // 订单总金额，单位为分，详见支付金额
		$input->SetNotify_url($config_value['notify_url']); // 接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。
		$input->SetTrade_type("NATIVE"); // 交易类型   取值如下：JSAPI，NATIVE，APP，详细说明见参数规定    NATIVE--原生扫码支付
		$input->SetProduct_id("manniu"); // 商品ID trade_type=NATIVE，此参数必传。此id为二维码中包含的商品ID，商户自行定义。
		$notify = new NativePay();
		$result = $notify->GetPayUrl($input); // 获取生成二维码的地址
		$url2 = $result["code_url"];
		return '<img alt="模式二扫码支付" src="'.url('api/QRCode/qrCode',['data'=>urlencode($url2)]).'" />';
    }

    /**
     * 微信浏览器支付
     * @param   array   $order 			订单信息
     * @param   array   $config_value 	支付方式信息
     */
    function getJSAPI($order, $config_value){
        //1、获取用户openid
        $tools = new JsApiPay();
        $openId = $tools->GetOpenid();
        //2、统一下单
        $input = new WxPayUnifiedOrder();
        $input->SetBody("会员充值"); // 商品描述
        $input->SetAttach("weixin"); // 附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
        $input->SetOut_trade_no($order->order_sn); // 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
        $input->SetTotal_fee($order->order_amount*100); // 订单总金额，单位为分，详见支付金额
        $input->SetTime_start(date("YmdHis")); // 设置订单生成时间
        $input->SetTime_expire(date("YmdHis", time() + 600)); // 设置订单失效时间
        $input->SetGoods_tag("book_pay");
        $input->SetNotify_url($config_value['notify_url']); // 接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。
        $input->SetTrade_type("JSAPI"); // 交易类型   取值如下：JSAPI，NATIVE，APP，详细说明见参数规定    JSAPI--微信浏览器jsapi支付
        $input->SetOpenid($openId); // 用户openid
        return $order = WxPayApi::unifiedOrder($input);
    }

    /**
     * 手机浏览器支付
     * @param   array   $order 			订单信息
     * @param   array   $config_value 	支付方式信息
     */
    function getH5($order, $config_value){

    }

    /**
     * 服务器点对点响应操作给支付接口方调用
     */
    function response(){

    }

    /**
     * 页面跳转响应操作给支付接口方调用
     */
    function respond2(){

    }
}